package com.alice.chain.handler;

/**
 * @Author: wujing
 * @Date: 2024/6/26 9:38
 * @Description: TODO
 **/

import com.alice.chain.vo.ProductVO;
import com.alice.chain.vo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.Objects;

/**
 * 空值校验处理器
 */
@Component
@Slf4j
public class NullValueCheckHandler extends AbstractCheckHandler {

    @Override
    public Result handle(ProductVO param) {
       log.info("空值校验 NullValueCheckHandler 开始...");
        //降级：如果配置了降级，则跳过此处理器，执行下一个处理器
        if (super.getConfig().getDown()) {
            System.out.println("空值校验 NullValueCheckHandler 已降级，跳过空值校验 NullValueCheckHandler...");
            return super.next(param);
        }

        //参数必填校验
        if (Objects.isNull(param)) {
            return Result.failure();
        }
        log.info("空值校验 NullValueCheckHandler 通过...");
        //执行下一个处理器
        return super.next(param);
    }
}
